// 仅导入需要的 AES 和编码模块
import aes from "crypto-js/aes";
import encUtf8 from "crypto-js/enc-utf8";

// 导出加密数据
export const exportData = (dataToExport) => {
  try {
    // 将数据转换为字符串
    const dataString = JSON.stringify(dataToExport);

    // 加密数据
    const encryptedData = aes.encrypt(dataString, "my_secret_key").toString();

    // 创建一个 Blob 对象
    const blob = new Blob([encryptedData], { type: "text/plain" });

    // 创建一个临时的 URL
    const url = URL.createObjectURL(blob);

    // 创建一个 <a> 元素用于下载
    const a = document.createElement("a");
    a.href = url;
    a.download = `encrypted_data_${new Date().toISOString().slice(0, 10)}.tab`;
    document.body.appendChild(a);
    a.click();

    // 清理
    document.body.removeChild(a);
    URL.revokeObjectURL(url);

    alert("数据导出成功！");
  } catch (error) {
    console.error("导出数据时出错:", error);
    alert(`导出数据失败: ${error.message}`);
  }
};

// 导入并解密数据
export const importData = (file) => {
  if (!file) return;

  const reader = new FileReader();
  reader.onload = async (event) => {
    try {
      const fileContent = event.target.result;

      // 解密数据
      const bytes = aes.decrypt(fileContent, "my_secret_key");
      const decryptedData = bytes.toString(encUtf8);
      const parsedData = JSON.parse(decryptedData);
      console.log("parsedData", parsedData);
      alert("数据导入成功！");
    } catch (error) {
      console.error("导入数据时出错:", error);
      if (error instanceof SyntaxError) {
        alert("文件解析失败，请确保文件格式正确并使用相同的加密方式。");
      } else {
        alert(`导入数据失败: ${error.message}`);
      }
    }
  };
  reader.readAsText(file);
};
